The widespread availability of Internet Protocol (“IP”) network connectivity has made it possible to create large-scale distributed networks of computing systems to perform many tasks. For example, the Great Internet Mersenne Prime Search (“GIMPS”) project provides software that can be executed on various types of computers to participate in a distributed search for large prime numbers. With appropriately-designed software, individual computers in a distributed network can come and go at will, and the project being performed by the network will simply proceed faster or slower according to the resources available.
One project that has proven amenable to a distributed approach is the dissemination of large volumes of data. When many people wish to obtain a copy of a data object (and particularly a large—multi-megabyte—data object) at nearly the same time, the provider of the data object may have inadequate network bandwidth to timely supply the requested data to all corners. In addition, other network nodes may restrict the smooth and rapid dissemination of data when many clients all attempt to retrieve data from a single source.
A distributed data dissemination network uses computers that have received a portion of a data object as additional sources of the object. For example, if the origin server provides a block of data to a first client, then a second client can obtain the block of data from either the origin server or the first client. A third client has an even wider range of possible places from which to receive the data. Distributed data dissemination networks are often called “peer-to-peer” networks because participants in the network (“peers”) exchange data among themselves to reduce the load on an original server and to take advantage of peers' upstream data communication capacity. (This upstream capacity would be unused in a traditional distribution scenario where each receiving computer obtained all the data directly from the origin server.)
Peer-to-peer software often includes functionality to thwart data tampering, where a malicious client distributes a portion of a data object, modified to be unuseable or to cause undesirable operation at a recipient's computer. Data protection is usually built on one-way cryptographically secure hash functions and digital signatures. “Fairness” functionality is also sometimes provided, so that participants in the peer-to-peer network must help to distribute the data to others if they wish to receive portions of data objects they do not yet have. BitTorrent™ is one popular peer-to-peer data distribution software application.